define(function (require, exports, module) {


    //	获取可使用红包个数和红包占比投资金额比例
    $.ajax({
        url: '/app/redEnvelope/initUseable.html?randomTime=' + (new Date()).getTime(),
        type: 'post',
        dataType: 'json',
        success: function (data) {
            $("#redPackageRate").val(data.tenderRedpackageRate);
            $(".redPackageRate").text(data.tenderRedpackageRate * 100);
            if (data.rdEnvelopeCount == 0) {
                $(".choiceRedPacket").addClass("hide");
                $(".choiceRedPacket").after("<span style='display:block'>当前没有可使用红包</span>");
            }
        }
    });

    var redPacketsRule = $("#redPacketsRule").val();
    var redPacketsRuleArr = redPacketsRule.split(",");
    var reduseRange = [];
    for (var i = 0; i < redPacketsRuleArr.length; i++) {
        var arr = redPacketsRuleArr[i].split("^");
        reduseRange.push({});
        reduseRange[i].min = parseFloat(arr[0]);
        reduseRange[i].max = parseFloat(arr[1]);
        reduseRange[i].red = parseFloat(arr[2]);
    }

    //***1：选择红包功能
    var
        $checkAllRedPacket = $('.checkAllRedPacket input[type="checkbox"]'),			// 红包全选按钮节点
        $choiceRedPacketBtn = $('.choiceRedPacketBox ul li'),
        $choiceRedPacketInput = $('.choiceRedPacketBox ul li input[type="checkbox"]'),	// 单个红包选择框节点
        $redPacketMoney = $('.redPacketMoney'),											// 单个红包金额节点,弹框显示

        $redPacketConfirm = $("#redPacketConfirm"),										// 	点击确认,弹框显示
        actualPayment = $("#money").val(),												//	实际支付总额
        currentCheckedMoney = 0,  														// 	选中红包总额     数值型应先赋值为0，表明为数值
        money = $money.val(),															//	输入投资金额
        redPackageRate = $("#redPackageRate").val(),//红包使用比例
        canUseRedMoney = money * parseFloat(redPackageRate),				//	可用红包总额
        lowestAmount = $("#lowestAccount").text(),//最小投标金额
        mostAmount = $("#mostAccount").text(),//最大投标金额
        accountWait = $("#accountWait").text(),//剩余可投金额
        dataChecked = [];//	可用红包总额  模拟值
    var $form_mony_tip = $(".form_mony_tip");			// 提示语
    //	选择红包弹窗
    $choiceRedPacket.on("click", function () {

        if ($money.val() != '') {

            if ($money.val() < parseInt(lowestAmount) && parseInt(accountWait) > parseInt(lowestAmount)) {
                $(".form_mony_tip").removeClass("hide").html('投标金额不能小于最小投标金额<a href="javascript:;" id="invest_all">' + lowestAmount + '</a>元！');
                $("#invest_all").click(function () {
                    $money.val(lowestAmount);
                    $form_mony_tip.addClass("hide");
                    $finalActualPayment.html("实际支付：<em>" + $money.val() + "</em>元");
                    $finalInvestMoney.html("实际投资：<em>" + $money.val() + "</em>元");
                });
            } else if ($money.val() < parseInt(accountWait) && parseInt(accountWait) < parseInt(lowestAmount)) {
                $(".form_mony_tip").removeClass("hide").html('<b class="iconfont">&#xe60f;</b>请填入全部剩余<a href="javascript:;" id="invest_all">可投金额</a>！');
                $("#invest_all").click(function () {
                    $money.val(accountWait);
                    $form_mony_tip.addClass("hide");
                    $finalActualPayment.html("实际支付：<em>" + $money.val() + "</em>元");
                    $finalInvestMoney.html("实际投资：<em>" + $money.val() + "</em>元");
                });
            } else if ($money.val() > parseInt(accountWait)) {
                $(".form_mony_tip").removeClass("hide").html('投标金额不能大于剩余可投金额<a href="javascript:;" id="invest_all">' + accountWait + '</a>元！');
                $("#invest_all").click(function () {
                    $money.val(accountWait);
                    $form_mony_tip.addClass("hide");
                    $finalActualPayment.html("实际支付：<em>" + $money.val() + "</em>元");
                    $finalInvestMoney.html("实际投资：<em>" + $money.val() + "</em>元");
                });
            } else {
                $.ajax({
                    url: '/app/redEnvelope/useable.html?randomTime=' + (new Date()).getTime(),
                    type: 'get',
                    dataType: 'json',
                    cache: false,
                    success: function (json) {
                            money = $money.val();


                            var bigUserMoney = 0;
                            for (var i = 0; i < reduseRange.length; i++) {
                                if (money > reduseRange[i].min && money <= reduseRange[i].max) {
                                    bigUserMoney = reduseRange[i].red;
                                    break;
                                } else if (i == (reduseRange.length - 1) && money > reduseRange[i].max) {
                                    bigUserMoney = reduseRange[i].red;
                                }
                            }
                            for (var i = 0, length = json.rows.length; i < length; i++) {
                                if (json.rows[i].amount > bigUserMoney) {
                                    json.rows[i].useFlag = 1;
                                }
                            }

                            $("#redPacketList").html(Handlebars.compile(require("../../../../tpl/invest/ext/redPacketList.tpl"))(json));

                        require.async(['/plugins/layer-v1.8.4/skin/layer.css'], function () {
                            window.layer.open({
                                type: 1,
                                closeBtn: [0, true],
                                title: "请选择可使用红包",
                                area: ['300px', 'auto'],
                                border: [1, 1, '#ccc'],
                                content: $('#choiceRedPacket'),
                                shift:3,
                                close: function () {
                                },
                                success: function (layero) {
                                    $redPacketMoney.next('input[type="radio"]').attr("checked", false);
                                    $choiceRedPacketMoney.text('0');
                                    var investMoneyVal = $money.val();

                                    //  获取隐藏域中的红包id
                                    dataChecked = ($("#redMoneyIdArry").val()).split(",");

                                    //  提示
                                    //$(".redPacketTips").html("").fadeIn();
                                    $(".redPacketTips").html("").stop().animate({'opacity': 1}, 1000);
                                    //  第二次进入时，保持上一次选中的状态
                                    $.each(dataChecked, function (index, value) {
                                        $("#choiceRedPacket" + value).attr("checked", true);
                                        $("#choiceRedPacket" + value).parent().addClass("checkInput");
                                    });

                                    //  第二次进入时，保持上一次选中的值
                                    currentCheckedMoney = parseInt($choiceRedPacket.find("em").text());		//	'弹框'当前选中红包 等于'页面'当前选中红包

                                    $(".choiceRedPacketMoney").text($choiceRedPacket.find("em").text());	// 选中的红包总额
//	                                $(".investMoney").text($money.val() - currentCheckedMoney);				//	实际支付总额
                                    $(".investMoney").text($money.val());				//	实际支付总额

                                }
                            });
                            $redPacketConfirm.click(function () {
                                // 	点击确认时初始化，防止更改之后，数组累计
                                for (var i = dataChecked.length; i > 0; i--) {
                                    dataChecked.pop();
                                }

                                //	将选中红包的id追加到dataChecked数组
                                $('.choiceRedPacketBox ul li input[type="checkbox"]').each(function () {
                                    if ($(this).attr("checked")) {
                                        dataChecked.push($(this).val());
                                    }
                                });

                                //	选中id数组赋值给页面隐藏域
                                $("#redMoneyIdArry").val(dataChecked);
                                layer.closeAll();
                                //	页面显示
//                      		  $finalActualPayment.html("实际支付：<em>"+($money.val()-currentCheckedMoney)+"</em>元");
                                $finalActualPayment.html("实际支付：<em>" + ($money.val()) + "</em>元");
                                $choiceRedPacket.html("使用红包：<em>" + currentCheckedMoney + "</em>元&nbsp;&nbsp;&nbsp;");
                            });
                            FnCheckAll($('.checkAllRedPacket input[type="checkbox"]'));
                            FnCheckSingle($('#redPacketList li[class!="nouse"]'));

                        });
                    }
                });
            }

        } else {
            $(".form_mony_tip").removeClass("hide").html('<b class="iconfont"><!--&#xe60f;-->*</b>请先输入投标金额！');
        }
    });


    function FnCheckAll(obj) {
        obj.on("click", function () {
            var flag = this.checked,
                $checkAllRedPacket = $('.checkAllRedPacket input[type="checkbox"]'),			// 红包全选按钮节点
                $choiceRedPacketBtn = $('.choiceRedPacketBox ul li'),
                $choiceRedPacketInput = $('.choiceRedPacketBox ul li input[type="checkbox"]'),	// 单个红包选择框节点
                $redPacketMoney = $('.redPacketMoney'),											// 单个红包金额节点,弹框显示

                $redPacketConfirm = $("#redPacketConfirm"),										// 	点击确认,弹框显示
                actualPayment = $("#money").val(),												//	实际支付总额
//    	    currentCheckedMoney = 0,  														// 	选中红包总额     数值型应先赋值为0，表明为数值    
                money = $money.val(),															//	输入投资金额
                redPackageRate = $("#redPackageRate").val(),
                canUseRedMoney = parseInt(money * redPackageRate),								//	可用红包总额
                mostAmount = $("#mostAccount").text(),//最大投标金额
                waitAccount = $("#waitAccount").text();//剩余可投金额

            $choiceRedPacketInput.each(function () {
                if (flag == true) {	//	全选
                    $(this).parent().addClass('checkInput');
                    if ($(this).attr('checked')) {
                        // 当前已经被选中，则不需要任何操作
                    } else {
                        // 此时被选中，应标识checked，且加上当前红包金额
                        $(this).attr('checked', true);


                        currentCheckedMoney = currentCheckedMoney + parseInt($(this).parent().parent().find(".redPacketMoney").text());

                        if (currentCheckedMoney > canUseRedMoney) {		//	当前选中红包  大于  可使用红包

                            if ($(this).parent().has('checkInput')) {	//	若当前按钮为选中状态

                                //	按钮状态切换
                                $(this).attr('checked', false);
                                $(this).parent().removeClass('checkInput');


                                //	金额计算
                                currentCheckedMoney = currentCheckedMoney - parseInt($(this).parent().parent().find(".redPacketMoney").text());


                                //  提示

                                $(".redPacketTips").html("").fadeIn();
                                $(".redPacketTips").html("红包使用总额不得超过<em>" + canUseRedMoney + "</em>元").delay(1000).fadeOut();
                                //$(".redPacketTips").html("").stop().animate({'opacity':1}, 1000);
                                //$(".redPacketTips").html("红包使用总额不得超过<em>"+canUseRedMoney+"</em>元").stop().animate({'opacity':0}, 1000);
                                return false;	// 跳出each循环
                            }
                        }
                    }

                } else if (flag == false) { 	//	全不选

                    //	按钮状态切换
                    $(this).parent().removeClass('checkInput');
                    $(this).attr('checked', false);


                    //	金额计算
                    currentCheckedMoney = 0;    // 重新对选中红包赋值，且为0


                }
            });
            // 计算实际支付总额
            if (money == 0) {
                actualPayment = 0;
            } else {
//            	actualPayment = money-currentCheckedMoney;	
                actualPayment = money;
            }

            //	弹框显示
            $choiceRedPacketMoney.text(currentCheckedMoney); //	弹框选中红包总额
            $investMoney.text(actualPayment);  // 弹框实际支付总额

        });
    }

    function FnCheckSingle(obj) {
        obj.on("click", function () {
            money = $money.val();															//	输入投资金额
            redPackageRate = $("#redPackageRate").val();
            canUseRedMoney = parseInt(money * redPackageRate);								//	可用红包总额
            mostAmount = $("#mostAccount").text();//最大投标金额
            waitAccount = $("#waitAccount").text();//剩余可投金额
            $('#checkAllRedPacket').attr('checked', false);
            var $parent = $(this).find('label');
            if ($parent.hasClass('checkInput')) {		//  如果当前为选中状态,点击后切换为非选中状态

                //	状态切换
                $parent.removeClass('checkInput');
                $parent.children('input').attr('checked', false);

                //	金额计算
                currentCheckedMoney -= parseInt($(this).find(".redPacketMoney").text());
//                    actualPayment = parseInt($money.val())-currentCheckedMoney;	// 实际支付总额
                actualPayment = parseInt($money.val());	// 实际支付总额

            } else {	//  如果当前为非选中状态,点击后切换为选中状态
                //控制只能单选
                $(this).parent().find("label").removeClass("checkInput");
                $(this).parent().find("label").children('input').attr('checked', false);
                currentCheckedMoney = 0;

                currentCheckedMoney += parseInt($(this).find(".redPacketMoney").text());
                if (currentCheckedMoney > canUseRedMoney) {		// 当前选中红包总额  大于  可用红包总额

                    //	金额计算
                    currentCheckedMoney -= parseInt($(this).find(".redPacketMoney").text());
//                    	actualPayment = parseInt($money.val())-currentCheckedMoney;	// 实际支付总额                   	
                    actualPayment = parseInt($money.val());	// 实际支付总额

                    //	提示
                    $(".redPacketTips").html("").fadeIn();
                    $(".redPacketTips").html("红包使用总额不得超过<em>" + canUseRedMoney + "</em>元").delay(1000).fadeOut();

                    //$(".redPacketTips").html("").stop().delay(500).animate({'opacity':1}, 1000);
                    //$(".redPacketTips").html("红包使用总额不得超过<em>"+canUseRedMoney+"</em>元").stop().delay(500).animate({'opacity':0}, 1000);

                } else {	// 当前选中红包总额  小于  可用红包总额

                    $parent.addClass('checkInput');
                    $parent.children('input').attr('checked', true);
//    	                actualPayment = parseInt($money.val())-currentCheckedMoney;	// 实际支付总额
                    actualPayment = parseInt($money.val());	// 实际支付总额

                }
            }

            //   弹框显示
            $choiceRedPacketMoney.text(currentCheckedMoney); //	弹框选中红包总额
            $investMoney.text(actualPayment);  // 弹框实际支付总额

        });
    }

});